{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6bfa4a11-a90b-41cb-8370-9b93b58d2097",
   "metadata": {},
   "source": [
    "# Python模块\r\n",
    "\r\n",
    "### 1. 模块的概念与作用\r\n",
    "\r\n",
    "在Python中，模块是一个保存了一系列函数定义和变量的文件。这个文件的名字就是模块的名字，加上`.py`后缀。模块可以被其他Python代码导入，以使用其中定义的函数、变量和类等。使用模块有几个好处：\r\n",
    "\r\n",
    "- **代码重用**：将代码分割成模块，可以在多个不同项目中重用这些模块。\r\n",
    "- **命名空间隔离**：模块可以包含相同名称的函数和变量而不会发生冲突。\r\n",
    "- **可维护性**：模块化可以让代码更加易于理解和维护。\r\n",
    "\r\n",
    "#### 创建模块\r\n",
    "\r\n",
    "假设我们要创建一个简单的模块，该模块提供了一些基本的数学操作。我们将这个文件命名为`math_utils.py`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a8dcb483-dd23-4e2e-873c-46270b7e6fee",
   "metadata": {},
   "outputs": [],
   "source": [
    "# math_utils.py\n",
    "\n",
    "def add(a, b):\n",
    "    \"\"\"两数相加\"\"\"\n",
    "    return a + b\n",
    "\n",
    "def subtract(a, b):\n",
    "    \"\"\"两数相减\"\"\"\n",
    "    return a - b\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "003b998c-da0a-4793-a793-438b651c686c",
   "metadata": {},
   "source": [
    "#### 使用模块\n",
    "\n",
    "现在，我们将展示如何在另一个Python脚本中导入和使用上面创建的`math_utils`模块。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5def7f83-e4f3-422e-ba15-517830fd9fbd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5 + 3 = 8\n",
      "10 - 5 = 5\n"
     ]
    }
   ],
   "source": [
    "import math_utils\n",
    "# 使用math_utils模块中的函数\n",
    "result_add = math_utils.add(5, 3)\n",
    "print(f\"5 + 3 = {result_add}\")  # 输出: 5 + 3 = 8\n",
    "\n",
    "result_subtract = math_utils.subtract(10, 5)\n",
    "print(f\"10 - 5 = {result_subtract}\")  # 输出: 10 - 5 = 5\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57dc6dba-a84d-44cf-a395-cbae9bab2a12",
   "metadata": {},
   "source": [
    "在这个例子中，我们通过`import math_utils`语句导入了`math_utils.py`文件中定义的所有内容。之后，我们可以使用`模块名.函数名`的方式调用模块中定义的函数。\n",
    "\n",
    "模块是Python编程中一个核心和强大的概念，它促进了代码的重用、维护性以及命名空间的良好管理。通过创建自定义模块，并在其他Python代码中导入和使用这些模块，开发者可以构建出结构清晰、易于维护的应用程序。上述示例展示了创建和使用自定义模块的基本步骤，这是每个Python开发者都应该掌握的技能。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24d93eec-46ab-433a-ad50-dbb5d8ab9f62",
   "metadata": {},
   "source": [
    "Python的强大之处，特别是它的标准库中的模块以及如何使用第三方库来增强我们的程序。\n",
    "\n",
    "### 内建模块示例\n",
    "\n",
    "#### 1. 使用`sys`模块\n",
    "\n",
    "`sys`模块提供了一系列有关Python解释器的变量和函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ca06565c-0b22-4949-b7da-53ebf0d8424f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python版本: 3.10.13 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:24:38) [MSC v.1916 64 bit (AMD64)]\n",
      "命令行参数: ['C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib\\\\site-packages\\\\ipykernel_launcher.py', '-f', 'C:\\\\Users\\\\wdcpclover\\\\AppData\\\\Roaming\\\\jupyter\\\\runtime\\\\kernel-7af12683-ff26-4a00-9057-e7951fe404bc.json']\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "# 打印Python解释器的版本信息\n",
    "print(f\"Python版本: {sys.version}\")\n",
    "\n",
    "# 打印命令行参数\n",
    "# 注意：在Jupyter notebook中执行可能不会显示期望的命令行参数\n",
    "print(f\"命令行参数: {sys.argv}\")\n",
    "\n",
    "# 系统退出\n",
    "# sys.exit()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "830074f4-d593-437d-b8ec-85b0aa71b18d",
   "metadata": {},
   "source": [
    "#### 2. 使用`os`模块\n",
    "\n",
    "`os`模块提供了许多与操作系统交互的功能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c827f771-852c-4ac7-be14-d42411fcfcfc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前工作目录: C:\\Users\\wdcpclover\\Desktop\\python程序基础\n",
      "目录内容: ['.git', '.idea', '.ipynb_checkpoints', 'hello.py', 'main.py', 'math_utils.py', 'Python函数.ipynb', 'Python模块.ipynb', 'Python的基础语法.ipynb', 'Untitled1.ipynb', '__pycache__', '初识Python.ipynb', '字符串.ipynb', '流程控制.ipynb', '环境配置.md', '邂逅python.ipynb', '面向对象编程.ipynb']\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "# 获取当前工作目录\n",
    "print(f\"当前工作目录: {os.getcwd()}\")\n",
    "\n",
    "# 列出目录内容\n",
    "print(f\"目录内容: {os.listdir('.')}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c7da372-0d85-4fe1-aef6-e887d42db6dc",
   "metadata": {},
   "source": [
    "#### 3. 使用`math`模块\n",
    "\n",
    "`math`模块提供了广泛的数学函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1a1eb898-0145-47b6-8c1e-c3426cc58858",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "圆的面积: 78.54\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "# 计算圆的面积\n",
    "radius = 5\n",
    "area = math.pi * (radius ** 2)\n",
    "print(f\"圆的面积: {area:.2f}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7348dcde-6bb3-49db-9617-cdfdbf010836",
   "metadata": {},
   "source": [
    "#### 4. 使用`datetime`模块\n",
    "\n",
    "`datetime`模块用于处理日期和时间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "db4e7802-6710-4b88-bfe7-9baf38771429",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前时间: 2024-04-07 01:04:49\n"
     ]
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "\n",
    "# 获取当前日期和时间\n",
    "now = datetime.now()\n",
    "print(f\"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac92bf68-733d-407d-b4d0-1a8d4e84250a",
   "metadata": {},
   "source": [
    "### 第三方库示例\n",
    "\n",
    "#### 1. 使用`numpy`（进行数学和科学计算）\n",
    "\n",
    "首先，确保安装了`numpy`：`pip install numpy`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c041c310-5c80-4906-816e-593b1d25ea02",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Requirement already satisfied: numpy in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (1.26.4)\n"
     ]
    }
   ],
   "source": [
    "!pip install numpy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "401ab28c-47ad-4495-adea-0fa0b2ec9488",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "矩阵的行列式: -2.0000000000000004\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 创建一个2x2的矩阵\n",
    "matrix = np.array([[1, 2], [3, 4]])\n",
    "\n",
    "# 计算矩阵的行列式\n",
    "det = np.linalg.det(matrix)\n",
    "print(f\"矩阵的行列式: {det}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ace746f-8be5-4152-b63e-022500b82fc6",
   "metadata": {},
   "source": [
    "#### 2. 使用`requests`（HTTP库）\n",
    "\n",
    "首先，确保安装了`requests`：`pip install requests`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "22b9ee08-e78b-4024-b5ed-7bafbb9cec0f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "响应状态码: 200\n",
      "响应内容: {'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br, zstd', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.31.0', 'X-Amzn-Trace-Id': 'Root=1-66118125-41c2ce6e7699535c269f2b4f'}, 'origin': '221.15.152.252', 'url': 'https://httpbin.org/get'}\n"
     ]
    }
   ],
   "source": [
    "import requests\n",
    "\n",
    "# 向httpbin.org发送GET请求\n",
    "response = requests.get('https://httpbin.org/get')\n",
    "print(f\"响应状态码: {response.status_code}\")\n",
    "print(f\"响应内容: {response.json()}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "381b5828-4ec3-4efa-adf3-7cbd5b686ccd",
   "metadata": {},
   "source": [
    "#### 3. 使用`pandas`（数据分析库）\n",
    "\n",
    "首先，确保安装了`pandas`：`pip install pandas`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "4a5bb5b4-c4de-468a-9644-b7793be2a843",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   Name  Age\n",
      "0  John   28\n",
      "1  Anna   24\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 创建一个简单的DataFrame\n",
    "data = {'Name': ['John', 'Anna'], 'Age': [28, 24]}\n",
    "df = pd.DataFrame(data)\n",
    "\n",
    "print(df)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57d27180-bc2b-4332-941c-c38a741940f6",
   "metadata": {},
   "source": [
    "## 三、模块导入\n",
    "\n",
    "### 1. 导入整个模块\n",
    "\n",
    "当你想要导入一个模块，并使用其中的多个函数或类时，可以导入整个模块。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9e2dc49d-8129-493b-957a-e37fa1b79c53",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.0\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "# 使用math模块计算平方根\n",
    "result = math.sqrt(16)\n",
    "print(result)  # 输出: 4.0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ffb5a70-6a41-4cac-8477-4ac1a336f7de",
   "metadata": {},
   "source": [
    "### 2. 导入特定的函数或类\n",
    "\n",
    "如果你只需要模块中的特定函数或类，可以单独导入它们，这样可以让代码更加清晰。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "548f4ca2-c257-44c0-8fab-f16dd7a37bb9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2024-04-07 01:12:46.885380\n"
     ]
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "\n",
    "# 获取并打印当前时间\n",
    "current_time = datetime.now()\n",
    "print(current_time)  # 输出类似: 2023-04-04 12:34:56.789012\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25e38608-9ba1-468c-93d6-8523a308ebe2",
   "metadata": {},
   "source": [
    "### 3. 模块别名\n",
    "\n",
    "为了简化代码或避免模块名冲突，你可以为导入的模块设置一个别名。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "e02bbca6-a4bc-4ef1-9662-90ec5bad890a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2024-04-07\n"
     ]
    }
   ],
   "source": [
    "import datetime as dt\n",
    "\n",
    "# 使用别名dt来访问datetime模块的功能\n",
    "current_date = dt.date.today()\n",
    "print(current_date)  # 输出类似: 2023-04-04\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "235781b9-bdfe-48ca-9cba-2bf828c9bbf3",
   "metadata": {},
   "source": [
    "### 4. 函数、类别名\n",
    "\n",
    "你也可以为导入的函数或类设置别名，这在导入的函数或类名过长或者不够直观时非常有用。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5b72c634-e48b-4d37-81bb-1529c9d99dd3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.0\n"
     ]
    }
   ],
   "source": [
    "from math import sqrt as square_root\n",
    "\n",
    "# 使用别名square_root调用sqrt函数\n",
    "result = square_root(25)\n",
    "print(result)  # 输出: 5.0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1115fb8b-ed93-4e99-8d34-8c69554fe127",
   "metadata": {},
   "source": [
    "### 5. 导入模块中的所有内容\n",
    "\n",
    "虽然不推荐，但你可以从模块中导入所有内容到当前命名空间，这样可以直接使用其中的函数和类，而不需要模块前缀。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "0d616191-d047-4d02-bbe4-0c6bc1e5e8f6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.141592653589793\n",
      "6.0\n"
     ]
    }
   ],
   "source": [
    "from math import *\n",
    "\n",
    "# 直接使用导入模块的函数\n",
    "print(pi)  # 输出π的值\n",
    "print(sqrt(36))  # 输出: 6.0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19358532-dc04-4394-9612-fd9c9f42de40",
   "metadata": {},
   "source": [
    "**注意**：使用`from module_name import *`会导入模块中的所有公有属性和函数到当前命名空间，这可能会导致命名冲突，并且使得代码的可读性降低。因此，除非确有必要，否则应避免这种做法。\n",
    "\n",
    "通过上述示例，我们可以看到Python提供的灵活导入方式，使得代码可以根据需要导入特定的模块功能。这些不同的导入方法可以根据实际情况和个人偏好来选择使用。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "962f4743-ef10-4565-8b17-f0f543ea7c4f",
   "metadata": {},
   "source": [
    "### 4. 创建自定义模块和包\n",
    "\n",
    "在Python中，创建自定义模块非常简单，本质上就是创建一个包含函数、类和变量等定义的`.py`文件。进一步地，通过组织这些文件进入包（包含`__init__.py`文件的目录），我们可以创建更加复杂的模块结构。\n",
    "\n",
    "#### 创建一个简单的模块\n",
    "\n",
    "假设我们要创建一个提供数学运算的模块，命名为`math_operations.py`："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "ee016b4b-9e71-4161-950e-cceb8158e2a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# math_operations.py\n",
    "\n",
    "def add(x, y):\n",
    "    \"\"\"两数相加\"\"\"\n",
    "    return x + y\n",
    "\n",
    "def multiply(x, y):\n",
    "    \"\"\"两数相乘\"\"\"\n",
    "    return x * y\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c326c4ef-a05b-4ef1-b5e0-d988d194f9ff",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "12\n"
     ]
    }
   ],
   "source": [
    "import math_operations\n",
    "\n",
    "print(math_operations.add(1, 2))  # 输出: 3\n",
    "print(math_operations.multiply(3, 4))  # 输出: 12\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "280bd44e-deb3-4ce4-b6ce-e0387858c145",
   "metadata": {},
   "source": [
    "#### 创建包\n",
    "\n",
    "为了将相关的模块组织在一起，我们可以创建一个包。比如，我们想要创建一个叫`my_math_package`的包，包含上面的`math_operations`模块和另一个`advanced_operations.py`模块。\n",
    "\n",
    "首先，在目录结构中创建一个名为`my_math_package`的文件夹，并在其中创建一个空的`__init__.py`文件。然后，将`math_operations.py`和`advanced_operations.py`放入这个文件夹中。\n",
    "\n",
    "```\n",
    "markdownCopy codemy_math_package/\n",
    "│\n",
    "├── __init__.py\n",
    "├── math_operations.py\n",
    "└── advanced_operations.py\n",
    "```\n",
    "\n",
    "`__init__.py`文件使得Python将这个目录视为一个包，它可以是空的，也可以包含初始化代码。\n",
    "\n",
    "现在，我们可以导入`my_math_package`包中的模块了："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "5631d62b-4262-4783-b55f-41490b04d646",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "12\n"
     ]
    }
   ],
   "source": [
    "from my_math_package import math_operations\n",
    "\n",
    "print(math_operations.add(5, 7))  # 输出: 12\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d34f6ae2-64fb-41b0-8826-c51e02ee3192",
   "metadata": {},
   "source": [
    "### 5. 模块的搜索路径\n",
    "\n",
    "当你导入一个模块时，Python解释器搜索模块的顺序如下：\n",
    "\n",
    "1. **内建模块**：Python首先尝试加载内置的模块。\n",
    "2. **sys.path**：如果模块不是内建模块，Python将按照`sys.path`变量提供的目录列表顺序来搜索模块。`sys.path`包括当前目录、Python安装的lib目录和环境变量PYTHONPATH中指定的目录。\n",
    "\n",
    "查看`sys.path`："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c83aaaec-737b-4f1c-947d-666e6cce8425",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C:\\\\Users\\\\wdcpclover\\\\Desktop\\\\python程序基础', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\python310.zip', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\DLLs', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3', '', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib\\\\site-packages', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib\\\\site-packages\\\\win32', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib\\\\site-packages\\\\win32\\\\lib', 'C:\\\\Users\\\\wdcpclover\\\\MiniConda3\\\\lib\\\\site-packages\\\\Pythonwin']\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "print(sys.path)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27ec4153-4f11-445f-84f6-c817fb48d554",
   "metadata": {},
   "source": [
    "## time模块示例\n",
    "\n",
    "Python的`time`模块提供了各种与时间相关的功能。这里有一些示例，展示了如何使用`time`模块进行时间的获取、格式化和操作：\n",
    "\n",
    "### 1. 获取当前时间戳\n",
    "\n",
    "时间戳是自1970年1月1日（UTC）以来的秒数。这是一个浮点数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "8b7b0bd4-b088-4ac8-b233-355b35bd12b8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前时间戳: 1712424502.8411689\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "timestamp = time.time()\n",
    "print(f\"当前时间戳: {timestamp}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "21a4e4ae-e321-4d26-a11f-1bc012d316ed",
   "metadata": {},
   "source": [
    "### 2. 将时间戳转换为可读的时间\n",
    "\n",
    "可以将时间戳转换为当前时区的时间，也可以转换为UTC时间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "44922de6-d1b1-49bd-b387-1f68bb769608",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "本地时间: time.struct_time(tm_year=2024, tm_mon=4, tm_mday=7, tm_hour=1, tm_min=28, tm_sec=22, tm_wday=6, tm_yday=98, tm_isdst=0)\n",
      "UTC时间: time.struct_time(tm_year=2024, tm_mon=4, tm_mday=6, tm_hour=17, tm_min=28, tm_sec=22, tm_wday=5, tm_yday=97, tm_isdst=0)\n"
     ]
    }
   ],
   "source": [
    "# 当前时区的时间\n",
    "local_time = time.localtime(timestamp)\n",
    "print(f\"本地时间: {local_time}\")\n",
    "\n",
    "# UTC时间\n",
    "utc_time = time.gmtime(timestamp)\n",
    "print(f\"UTC时间: {utc_time}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b32c705-8967-4bcb-b06d-c55fb81bf445",
   "metadata": {},
   "source": [
    "### 3. 格式化时间\n",
    "\n",
    "`strftime`函数可以将时间格式化为字符串。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "e6ab9ffa-4f1b-4ac2-93e3-0fcf50640110",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "格式化的本地时间: 2024-04-07 01:28:22\n"
     ]
    }
   ],
   "source": [
    "formatted_time = time.strftime(\"%Y-%m-%d %H:%M:%S\", local_time)\n",
    "print(f\"格式化的本地时间: {formatted_time}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51530bc4-fe06-4ce3-ae20-34bd06349512",
   "metadata": {},
   "source": [
    "### 4. 解析时间字符串\n",
    "\n",
    "`strptime`函数可以将时间字符串解析为时间元组。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "340e5bea-07f9-4e52-b897-d25a1cfa69a7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "解析的时间: time.struct_time(tm_year=2024, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)\n"
     ]
    }
   ],
   "source": [
    "time_string = \"2024-01-01 12:00:00\"\n",
    "parsed_time = time.strptime(time_string, \"%Y-%m-%d %H:%M:%S\")\n",
    "print(f\"解析的时间: {parsed_time}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ec173073-7b74-4bcc-8dca-05bcba94153a",
   "metadata": {},
   "source": [
    "time.struct_time(\n",
    "    tm_year=2024,  # 年份\n",
    "    tm_mon=1,      # 月份\n",
    "    tm_mday=1,     # 一个月中的第几天（日）\n",
    "    tm_hour=12,    # 小时（24小时制）\n",
    "    tm_min=0,      # 分钟\n",
    "    tm_sec=0,      # 秒\n",
    "    tm_wday=0,     # 一周中的第几天（0是周一，6是周日）\n",
    "    tm_yday=1,     # 一年中的第几天\n",
    "    tm_isdst=-1    # 是否是夏令时，1为是，0为否，-1表示未知\n",
    ")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "389502fb-7b15-4300-866e-0d849881bd98",
   "metadata": {},
   "source": [
    "### 5. 睡眠\n",
    "\n",
    "`sleep`函数可以让程序暂停指定的秒数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "6a2bc5ba-a4e6-457d-b037-1467f0809782",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "开始睡眠\n",
      "睡眠结束\n"
     ]
    }
   ],
   "source": [
    "print(\"开始睡眠\")\n",
    "time.sleep(5)  # 睡眠5秒\n",
    "print(\"睡眠结束\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07659da1-e949-47b2-af73-2e5e5728cc24",
   "metadata": {},
   "source": [
    "### 6. 性能测量\n",
    "\n",
    "可以使用`time`模块测量代码执行的时间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d3aa20f5-a3d7-4289-b54c-1c725464a8cd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "代码执行时间: 2.0079798698425293秒\n"
     ]
    }
   ],
   "source": [
    "start_time = time.time()\n",
    "\n",
    "# 放置需要测量执行时间的代码\n",
    "time.sleep(2)  # 示例代码，仅作为占位符\n",
    "\n",
    "end_time = time.time()\n",
    "elapsed_time = end_time - start_time\n",
    "print(f\"代码执行时间: {elapsed_time}秒\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69ebaa97-72e9-46ba-85ee-3b819f0e8e17",
   "metadata": {},
   "source": [
    "假设中国的高考时间定在每年的6月7日上午9点（以北京时间为准）。我们可以编写一个倒计时程序，显示距离下一次高考还有多少天、小时、分钟和秒。\n",
    "\n",
    "请注意，这个示例程序在你运行时可能需要根据当前日期进行适当调整。以下是实现这个倒计时的示例代码："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "f28e6243-2927-4ad9-9e8c-fbd937a1d32e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "距离下一次高考还有：61天7小时25分钟45秒。\n"
     ]
    }
   ],
   "source": [
    "from datetime import datetime, timedelta\n",
    "import time\n",
    "\n",
    "def get_next_gaokao_datetime():\n",
    "    \"\"\"获取下一次高考的具体日期和时间\"\"\"\n",
    "    now = datetime.now()\n",
    "    current_year = now.year\n",
    "    # 高考时间为每年的6月7日上午9点\n",
    "    gaokao_date = datetime(current_year, 6, 7, 9)\n",
    "    # 如果当前日期已经超过了当年的高考时间，则目标年份为明年\n",
    "    if now > gaokao_date:\n",
    "        gaokao_date = datetime(current_year + 1, 6, 7, 9)\n",
    "    return gaokao_date\n",
    "\n",
    "def countdown_to_gaokao():\n",
    "    \"\"\"倒计时到下一次高考\"\"\"\n",
    "    gaokao_datetime = get_next_gaokao_datetime()\n",
    "    now = datetime.now()\n",
    "    # 计算现在时间到高考时间的时间差\n",
    "    countdown = gaokao_datetime - now\n",
    "    days, seconds = countdown.days, countdown.seconds\n",
    "    hours = seconds // 3600\n",
    "    minutes = (seconds % 3600) // 60\n",
    "    seconds = (seconds % 60)\n",
    "    \n",
    "    return f\"距离下一次高考还有：{days}天{hours}小时{minutes}分钟{seconds}秒。\"\n",
    "\n",
    "# 运行倒计时程序\n",
    "print(countdown_to_gaokao())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "519ed14f-8baa-4f2e-a812-57e1f76cb039",
   "metadata": {},
   "source": [
    "Python的`turtle`包是一个简单的图形绘制库，旨在作为Python的一个教育工具，让初学者可以更容易地学习编程基础。它提供了一个绘图板（画布）和一个小海龟（turtle），这只小海龟可以理解和执行命令，根据给定的命令在画布上绘制图形。通过控制这只海龟的移动方向和距离，用户可以绘制各种复杂的图形和图案。\n",
    "\n",
    "`turtle`库基于Turtle graphics，最初是由Wally Feurzeig, Seymour Papert和Cynthia Solomon在1967年创造的，主要用于教育目的，特别是与Logo编程语言相关。\n",
    "\n",
    "### `turtle`的主要功能\n",
    "\n",
    "- **绘图命令**：`turtle`提供了一系列命令用于控制海龟，如前进(`forward()`)、后退(`backward()`)、转向(`left()`, `right()`)等。\n",
    "- **画笔控制**：用户可以控制画笔的状态（抬起或按下）、颜色、粗细等。\n",
    "- **窗口控制**：可以设置绘图窗口的大小、标题等。\n",
    "- **事件监听**：`turtle`可以响应键盘和鼠标事件，允许用户通过这些输入设备与绘图程序交互。\n",
    "\n",
    "### 示例代码\n",
    "\n",
    "以下是一个简单的例子，展示了如何使用`turtle`库绘制一个正方形："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "294e0ebb-4507-4574-b919-aae1887d7685",
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "\n",
    "# 创建画布和海龟\n",
    "screen = turtle.Screen()\n",
    "t = turtle.Turtle()\n",
    "\n",
    "# 绘制一个正方形\n",
    "for _ in range(4):\n",
    "    t.forward(100)  # 前进100单位\n",
    "    t.right(90)     # 右转90度\n",
    "\n",
    "# 结束\n",
    "turtle.done()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "aa3f07a2-bbbd-4af7-8d35-b4c216444202",
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "CIRCLE_RADIUS = 100        # 圆环半径\n",
    "UP_CIRCLE_SPACE = 50       # 上面圆环的间隙\n",
    "BLUE_CIRCLE_X = -260       # 蓝环底部顶点的X坐标值\n",
    "BLUE_CIRCLE_Y = -30        # 蓝环底部顶点的Y坐标值\n",
    "BIG_CIRCLE_RADIAN = 110   # 大弧度\n",
    "SMALL_CIRCLE_RADIAN = 30  # 小弧度\n",
    "turtle.setup(0.5, 0.5)    # 设置窗口的大小\n",
    "turtle.title(\"奥运五环\")   # 设置窗口的标题\n",
    "turtle.pensize(20)         # 设置画笔大小\n",
    "turtle.speed(2)             # 设置画笔移动的速度，值越大，速度越快\n",
    "# 画蓝色圆环\n",
    "turtle.penup()\n",
    "turtle.goto(BLUE_CIRCLE_X, BLUE_CIRCLE_Y)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#0081C8\")\n",
    "turtle.circle(CIRCLE_RADIUS)\n",
    "\n",
    "# 画黑色圆环\n",
    "turtle.penup()\n",
    "turtle.forward(2 * CIRCLE_RADIUS + UP_CIRCLE_SPACE)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#000000\")\n",
    "turtle.circle(CIRCLE_RADIUS)\n",
    "# 画红色圆环\n",
    "turtle.penup()\n",
    "turtle.forward(2 * CIRCLE_RADIUS + UP_CIRCLE_SPACE)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#EE334E\")\n",
    "turtle.circle(CIRCLE_RADIUS)\n",
    "# 画黄色圆环\n",
    "turtle.penup()\n",
    "turtle.forward(-(CIRCLE_RADIUS * 2 + UP_CIRCLE_SPACE + UP_CIRCLE_SPACE / 2))\n",
    "turtle.left(90)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#FCB131\")\n",
    "turtle.circle(CIRCLE_RADIUS)\n",
    "# 画绿色圆环\n",
    "turtle.penup()\n",
    "turtle.left(-90)\n",
    "turtle.forward(UP_CIRCLE_SPACE)\n",
    "turtle.right(90)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#00A651\")\n",
    "turtle.circle(CIRCLE_RADIUS)\n",
    "# 画蓝圆遮挡黄圆的部分\n",
    "turtle.penup()\n",
    "turtle.goto(BLUE_CIRCLE_X, BLUE_CIRCLE_Y + 2 * CIRCLE_RADIUS)\n",
    "turtle.left(90)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#0081C8\")\n",
    "turtle.circle(-CIRCLE_RADIUS, BIG_CIRCLE_RADIAN)\n",
    "# 画黑圆遮挡黄圆的部分\n",
    "turtle.penup()\n",
    "turtle.goto(BLUE_CIRCLE_X + 2 * CIRCLE_RADIUS +\n",
    "               UP_CIRCLE_SPACE, BLUE_CIRCLE_Y)\n",
    "turtle.seth(180)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#000000\")\n",
    "turtle.circle(-CIRCLE_RADIUS, SMALL_CIRCLE_RADIAN)\n",
    "# 画黑圆遮挡绿圆的部分\n",
    "turtle.penup()\n",
    "turtle.goto(BLUE_CIRCLE_X + 2 * CIRCLE_RADIUS +\n",
    "              UP_CIRCLE_SPACE, BLUE_CIRCLE_Y + 2 * CIRCLE_RADIUS)\n",
    "turtle.seth(180)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#000000\")\n",
    "turtle.circle(CIRCLE_RADIUS, -BIG_CIRCLE_RADIAN)\n",
    "# 画红圆遮挡绿圆的部分\n",
    "turtle.penup()\n",
    "turtle.goto(BLUE_CIRCLE_X + 4 * CIRCLE_RADIUS +\n",
    "              2 * UP_CIRCLE_SPACE, BLUE_CIRCLE_Y)\n",
    "turtle.seth(180)\n",
    "turtle.pendown()\n",
    "turtle.color(\"#EE334E\")\n",
    "turtle.circle(-CIRCLE_RADIUS, SMALL_CIRCLE_RADIAN)\n",
    "turtle.done()\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "d93de659-eae2-41d3-a010-9e3cee356fc3",
   "metadata": {},
   "outputs": [
    {
     "ename": "Terminator",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTclError\u001b[0m                                  Traceback (most recent call last)",
      "File \u001b[1;32m<string>:8\u001b[0m, in \u001b[0;36mcircle\u001b[1;34m(radius, extent, steps)\u001b[0m\n",
      "File \u001b[1;32m~\\MiniConda3\\lib\\turtle.py:1991\u001b[0m, in \u001b[0;36mTNavigator.circle\u001b[1;34m(self, radius, extent, steps)\u001b[0m\n\u001b[0;32m   1990\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mspeed(speed)\n\u001b[1;32m-> 1991\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_go\u001b[49m\u001b[43m(\u001b[49m\u001b[43ml\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   1992\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mspeed(\u001b[38;5;241m0\u001b[39m)\n",
      "File \u001b[1;32m~\\MiniConda3\\lib\\turtle.py:1605\u001b[0m, in \u001b[0;36mTNavigator._go\u001b[1;34m(self, distance)\u001b[0m\n\u001b[0;32m   1604\u001b[0m ende \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_position \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_orient \u001b[38;5;241m*\u001b[39m distance\n\u001b[1;32m-> 1605\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_goto\u001b[49m\u001b[43m(\u001b[49m\u001b[43mende\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[1;32m~\\MiniConda3\\lib\\turtle.py:3177\u001b[0m, in \u001b[0;36mRawTurtle._goto\u001b[1;34m(self, end)\u001b[0m\n\u001b[0;32m   3176\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_drawing:\n\u001b[1;32m-> 3177\u001b[0m     \u001b[43mscreen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_drawline\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdrawingLineItem\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m   3178\u001b[0m \u001b[43m                     \u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_position\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m   3179\u001b[0m \u001b[43m                     \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pencolor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pensize\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3180\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_update()\n",
      "File \u001b[1;32m~\\MiniConda3\\lib\\turtle.py:544\u001b[0m, in \u001b[0;36mTurtleScreenBase._drawline\u001b[1;34m(self, lineitem, coordlist, fill, width, top)\u001b[0m\n\u001b[0;32m    543\u001b[0m         cl\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;241m-\u001b[39my \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39myscale)\n\u001b[1;32m--> 544\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcoords\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlineitem\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mcl\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    545\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fill \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m<string>:1\u001b[0m, in \u001b[0;36mcoords\u001b[1;34m(self, *args, **kw)\u001b[0m\n",
      "File \u001b[1;32m~\\MiniConda3\\lib\\tkinter\\__init__.py:2795\u001b[0m, in \u001b[0;36mCanvas.coords\u001b[1;34m(self, *args)\u001b[0m\n\u001b[0;32m   2792\u001b[0m \u001b[38;5;66;03m# XXX Should use _flatten on args\u001b[39;00m\n\u001b[0;32m   2793\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtk\u001b[38;5;241m.\u001b[39mgetdouble(x) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m\n\u001b[0;32m   2794\u001b[0m                    \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtk\u001b[38;5;241m.\u001b[39msplitlist(\n\u001b[1;32m-> 2795\u001b[0m            \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtk\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mcoords\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m)]\n",
      "\u001b[1;31mTclError\u001b[0m: invalid command name \".!canvas\"",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mTerminator\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[43], line 42\u001b[0m\n\u001b[0;32m     40\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m color, position \u001b[38;5;129;01min\u001b[39;00m colors_positions:\n\u001b[0;32m     41\u001b[0m     setup_turtle(\u001b[38;5;241m*\u001b[39mposition, color)\n\u001b[1;32m---> 42\u001b[0m     \u001b[43mturtle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcircle\u001b[49m\u001b[43m(\u001b[49m\u001b[43mCIRCLE_RADIUS\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     44\u001b[0m \u001b[38;5;66;03m# 绘制遮挡部分\u001b[39;00m\n\u001b[0;32m     45\u001b[0m overlap_specs \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m     46\u001b[0m     ((START_X, START_Y \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m CIRCLE_RADIUS), BIG_CIRCLE_RADIAN),  \u001b[38;5;66;03m# 蓝圆遮挡黄圆\u001b[39;00m\n\u001b[0;32m     47\u001b[0m     ((START_X \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m CIRCLE_RADIUS \u001b[38;5;241m+\u001b[39m UP_CIRCLE_SPACE, START_Y), SMALL_CIRCLE_RADIAN),  \u001b[38;5;66;03m# 黑圆遮挡黄圆\u001b[39;00m\n\u001b[0;32m     48\u001b[0m     ((START_X \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m CIRCLE_RADIUS \u001b[38;5;241m+\u001b[39m UP_CIRCLE_SPACE, START_Y \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m CIRCLE_RADIUS), \u001b[38;5;241m-\u001b[39mBIG_CIRCLE_RADIAN),  \u001b[38;5;66;03m# 黑圆遮挡绿圆\u001b[39;00m\n\u001b[0;32m     49\u001b[0m     ((START_X \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m4\u001b[39m \u001b[38;5;241m*\u001b[39m CIRCLE_RADIUS \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m UP_CIRCLE_SPACE, START_Y), SMALL_CIRCLE_RADIAN)  \u001b[38;5;66;03m# 红圆遮挡绿圆\u001b[39;00m\n\u001b[0;32m     50\u001b[0m ]\n",
      "File \u001b[1;32m<string>:12\u001b[0m, in \u001b[0;36mcircle\u001b[1;34m(radius, extent, steps)\u001b[0m\n",
      "\u001b[1;31mTerminator\u001b[0m: "
     ]
    }
   ],
   "source": [
    "import turtle\n",
    "\n",
    "def setup_turtle(x, y, color):\n",
    "    \"\"\"设置海龟的起始位置、颜色和方向\"\"\"\n",
    "    turtle.penup()\n",
    "    turtle.goto(x, y)\n",
    "    turtle.pendown()\n",
    "    turtle.color(color)\n",
    "    turtle.setheading(0)  # 重置海龟的方向为默认值\n",
    "\n",
    "def draw_overlap_circle(x, y, extent):\n",
    "    \"\"\"绘制遮挡部分的圆环\"\"\"\n",
    "    setup_turtle(x, y, turtle.fillcolor())  # 使用当前填充色作为画笔色\n",
    "    turtle.circle(CIRCLE_RADIUS, extent)\n",
    "\n",
    "# 常量定义\n",
    "CIRCLE_RADIUS = 100\n",
    "UP_CIRCLE_SPACE = 50\n",
    "START_X = -260\n",
    "START_Y = -30\n",
    "BIG_CIRCLE_RADIAN = 110\n",
    "SMALL_CIRCLE_RADIAN = 30\n",
    "\n",
    "# 窗口设置\n",
    "turtle.setup(0.5, 0.5)\n",
    "turtle.title(\"奥运五环\")\n",
    "turtle.pensize(20)\n",
    "turtle.speed(2)\n",
    "\n",
    "# 颜色和位置的映射\n",
    "colors_positions = [\n",
    "    (\"#0081C8\", (START_X, START_Y)),  # 蓝\n",
    "    (\"#000000\", (START_X + 2 * CIRCLE_RADIUS + UP_CIRCLE_SPACE, START_Y)),  # 黑\n",
    "    (\"#EE334E\", (START_X + 4 * CIRCLE_RADIUS + 2 * UP_CIRCLE_SPACE, START_Y)),  # 红\n",
    "    (\"#FCB131\", (START_X + CIRCLE_RADIUS + UP_CIRCLE_SPACE / 2, START_Y - CIRCLE_RADIUS - UP_CIRCLE_SPACE / 2)),  # 黄\n",
    "    (\"#00A651\", (START_X + 3 * CIRCLE_RADIUS + 1.5 * UP_CIRCLE_SPACE, START_Y - CIRCLE_RADIUS - UP_CIRCLE_SPACE / 2))  # 绿\n",
    "]\n",
    "\n",
    "# 绘制五环\n",
    "for color, position in colors_positions:\n",
    "    setup_turtle(*position, color)\n",
    "    turtle.circle(CIRCLE_RADIUS)\n",
    "\n",
    "# 绘制遮挡部分\n",
    "overlap_specs = [\n",
    "    ((START_X, START_Y + 2 * CIRCLE_RADIUS), BIG_CIRCLE_RADIAN),  # 蓝圆遮挡黄圆\n",
    "    ((START_X + 2 * CIRCLE_RADIUS + UP_CIRCLE_SPACE, START_Y), SMALL_CIRCLE_RADIAN),  # 黑圆遮挡黄圆\n",
    "    ((START_X + 2 * CIRCLE_RADIUS + UP_CIRCLE_SPACE, START_Y + 2 * CIRCLE_RADIUS), -BIG_CIRCLE_RADIAN),  # 黑圆遮挡绿圆\n",
    "    ((START_X + 4 * CIRCLE_RADIUS + 2 * UP_CIRCLE_SPACE, START_Y), SMALL_CIRCLE_RADIAN)  # 红圆遮挡绿圆\n",
    "]\n",
    "\n",
    "# 绘制遮挡部分\n",
    "for (x, y), extent in overlap_specs:\n",
    "    draw_overlap_circle(x, y, extent)\n",
    "\n",
    "turtle.hideturtle()\n",
    "turtle.done()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "ead865f4-c312-494e-8dbd-4e1d03b3248d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<wordcloud.wordcloud.WordCloud at 0x226d6761990>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import wordcloud\n",
    "import numpy as np\n",
    "from PIL import Image\n",
    "# 准备字体路径\n",
    "font = 'AdobeHeitiStd-Regular.otf'\n",
    "# 准备词云形状\n",
    "picture = Image.open(\"wukong.png\")\n",
    "mk = np.array(picture)\n",
    "# 创建词云对象\n",
    "w = wordcloud.WordCloud(font_path=font, mask=mk,max_words=500, background_color='white')\n",
    "# 加载词云文本\n",
    "file = open('xiyouji.txt', encoding='utf-8')\n",
    "string = file.read()\n",
    "file.close()\n",
    "w.generate(string)\n",
    "# 生成词云图片\n",
    "w.to_file('xiyou1`.jpg')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "bb75b790-bd5b-4155-aa81-c43330824695",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Collecting wordcloud\n",
      "  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/75/7a/cad3b21a91cc55abe06f70146b564f20d9db2aee9631fdee580283bd5e1e/wordcloud-1.9.3-cp310-cp310-win_amd64.whl (299 kB)\n",
      "     ---------------------------------------- 0.0/300.0 kB ? eta -:--:--\n",
      "     --------- ----------------------------- 71.7/300.0 kB 1.3 MB/s eta 0:00:01\n",
      "     ----------------------------- -------- 235.5/300.0 kB 2.4 MB/s eta 0:00:01\n",
      "     -------------------------------------- 300.0/300.0 kB 2.3 MB/s eta 0:00:00\n",
      "Requirement already satisfied: numpy>=1.6.1 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from wordcloud) (1.26.4)\n",
      "Requirement already satisfied: pillow in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from wordcloud) (10.2.0)\n",
      "Requirement already satisfied: matplotlib in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from wordcloud) (3.8.0)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (0.11.0)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (4.25.0)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (1.4.4)\n",
      "Requirement already satisfied: packaging>=20.0 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (23.1)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (3.0.9)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from matplotlib->wordcloud) (2.8.2)\n",
      "Requirement already satisfied: six>=1.5 in c:\\users\\wdcpclover\\miniconda3\\lib\\site-packages (from python-dateutil>=2.7->matplotlib->wordcloud) (1.16.0)\n",
      "Installing collected packages: wordcloud\n",
      "Successfully installed wordcloud-1.9.3\n"
     ]
    }
   ],
   "source": [
    "!pip install wordcloud"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "655fad59-f7ee-4af4-ba93-8e9b985b6697",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Building prefix dict from the default dictionary ...\n",
      "Dumping model to file cache C:\\Users\\WDCPCL~1\\AppData\\Local\\Temp\\jieba.cache\n",
      "Loading model cost 1.212 seconds.\n",
      "Prefix dict has been built successfully.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "悟空      5282次\n",
      "唐僧      4013次\n",
      "八戒      1627次\n",
      "沙僧      806次\n",
      "和尚      603次\n",
      "妖精      599次\n",
      "菩萨      578次\n",
      "国王      442次\n",
      "呆子      417次\n",
      "徒弟      407次\n"
     ]
    }
   ],
   "source": [
    "import jieba\n",
    "# 打开并读取xiyouji.txt\n",
    "txt = open(r\"xiyouji.txt\", \"rb\").read()\n",
    "# 使用jieba进行分词操作\n",
    "words = jieba.lcut(txt)\n",
    "# 对划分的词语计数\n",
    "counts = {}\n",
    "for word in words:\n",
    "    if len(word) == 1:\n",
    "        continue\n",
    "    elif word == \"行者\" or word == \"大圣\" or word == \"老孙\":\n",
    "        rword = \"悟空\"\n",
    "    elif word == \"师父\" or word == \"三藏\" or word == \"长老\":\n",
    "        rword = \"唐僧\"\n",
    "    elif word == \"悟净\" or word == \"沙和尚\":\n",
    "        rword = \"沙僧\"\n",
    "    else:\n",
    "        rword = word\n",
    "    counts[rword] = counts.get(rword, 0) + 1\n",
    "\n",
    "# 构建停用词库\n",
    "excludes = {\"一个\", \"那里\", \"怎么\", \"我们\", \"不知\", \"两个\", \"甚么\",\n",
    "              \"只见\", \"不是\",\"原来\", \"不敢\", \"闻言\", \"如何\", \"什么\", \"\\r\\n\"}\n",
    "# 删除无意义的词语\n",
    "for word in excludes:\n",
    "    del counts[word]\n",
    "# 按中文词语的出现次数排序\n",
    "items = list(counts.items())\n",
    "items.sort(key=lambda x: x[1], reverse=True)\n",
    "# 采用固定的格式进行输出\n",
    "for i in range(10):\n",
    "    word, count = items[i]\n",
    "    print(f\"{word}      {count}次\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "558b1c1e-3afc-45ed-b1e4-9d993407a1de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Collecting jieba\n",
      "  Using cached jieba-0.42.1-py3-none-any.whl\n",
      "Installing collected packages: jieba\n",
      "Successfully installed jieba-0.42.1\n"
     ]
    }
   ],
   "source": [
    "!pip install jieba\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43ec62eb-005a-4201-8e0f-f07b19970316",
   "metadata": {},
   "source": [
    "Python的`random`包提供了生成随机数的功能，非常适合在需要随机数据的场景中使用，比如模拟实验、游戏、随机抽取等。以下是一些使用`random`包的示例：\n",
    "\n",
    "### 1. 生成随机整数\n",
    "\n",
    "使用`randint(a, b)`可以生成一个范围在a到b（包括a和b）的随机整数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "9b62fa98-3615-45cc-baf2-afec8de8b8a6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机整数（1-100）: 36\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "\n",
    "num = random.randint(1, 100)\n",
    "print(f\"随机整数（1-100）: {num}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "44ea9394-7d51-4ede-abc4-9040872ad482",
   "metadata": {},
   "source": [
    "### 2. 生成随机浮点数\n",
    "\n",
    "- 使用`random()`生成一个[0.0, 1.0)范围内的随机浮点数。\n",
    "- 使用`uniform(a, b)`生成一个指定范围内的随机浮点数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "12aeae67-5e2c-40b2-a80c-f7caec140af7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机浮点数（0.0-1.0）: 0.14596757494564983\n",
      "随机浮点数（1.0-10.0）: 7.999563885369899\n"
     ]
    }
   ],
   "source": [
    "random_float = random.random()\n",
    "print(f\"随机浮点数（0.0-1.0）: {random_float}\")\n",
    "\n",
    "random_float_range = random.uniform(1.0, 10.0)\n",
    "print(f\"随机浮点数（1.0-10.0）: {random_float_range}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd0a8a13-d397-4ee8-976b-db2b9a87d6e2",
   "metadata": {},
   "source": [
    "### 3. 随机选择元素\n",
    "\n",
    "从列表或序列中随机选择一个元素使用`choice(sequence)`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "fab22005-7d1e-4838-936f-253c0055c860",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机选择的颜色: 黄\n"
     ]
    }
   ],
   "source": [
    "items = ['红', '蓝', '绿', '黄']\n",
    "picked = random.choice(items)\n",
    "print(f\"随机选择的颜色: {picked}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cd0b6e3-d8bc-4fef-8cac-f531987df5be",
   "metadata": {},
   "source": [
    "### 4. 随机打乱列表\n",
    "\n",
    "使用`shuffle(list)`可以随机打乱列表中的元素顺序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "2716fff8-0a1d-4c15-9a94-342bd8d3e095",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "打乱后的列表: [1, 4, 5, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "numbers = [1, 2, 3, 4, 5]\n",
    "random.shuffle(numbers)\n",
    "print(f\"打乱后的列表: {numbers}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9f47fa15-a37d-4a5a-835c-2c106258f251",
   "metadata": {},
   "source": [
    "### 4. 随机打乱列表\n",
    "\n",
    "使用`shuffle(list)`可以随机打乱列表中的元素顺序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "42971b29-8db2-4296-a6cb-8ca844291b0b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "打乱后的列表: [4, 5, 1, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "numbers = [1, 2, 3, 4, 5]\n",
    "random.shuffle(numbers)\n",
    "print(f\"打乱后的列表: {numbers}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e1e3890-41b0-4c2d-8f92-b2c049bbc856",
   "metadata": {},
   "source": [
    "### 5. 随机生成密码或随机字符串\n",
    "\n",
    "结合`random.choice()`和字符串，可以生成随机密码或字符串。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "2f2ad3ab-b4fe-4f1f-b9fd-98eb7140debe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机生成的密码: nax9KI3U\n"
     ]
    }
   ],
   "source": [
    "import string\n",
    "\n",
    "# 生成一个8位随机密码，包含字母和数字\n",
    "chars = string.ascii_letters + string.digits\n",
    "password = ''.join(random.choice(chars) for _ in range(8))\n",
    "print(f\"随机生成的密码: {password}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fee8affc-766e-43d0-a8ab-00bbc16940cb",
   "metadata": {},
   "source": [
    "### 6. 生成随机布尔值\n",
    "\n",
    "使用`random.choice([True, False])`或者`bool(random.getrandbits(1))`生成一个随机的布尔值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "e6b54d7e-6d93-484c-b030-26de61dda105",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机布尔值: False\n"
     ]
    }
   ],
   "source": [
    "random_bool = random.choice([True, False])\n",
    "print(f\"随机布尔值: {random_bool}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cae10546-4ffe-40f8-ab1e-1513d6199a6f",
   "metadata": {},
   "source": [
    "`random`包还有更多功能等待探索，例如生成随机样本的`sample(sequence, k)`等。这些功能使得`random`包成为处理随机数据时非常强大且灵活的工具。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c126eeb5-24cd-4f1c-bbc0-91518171f995",
   "metadata": {},
   "source": [
    "在原神游戏中，\"抽卡\"是玩家获取新角色或武器的一种方式，而\"大保底\"是指达到一定的抽卡次数后，保证能够获得某种稀有物品的机制。假设在这个模拟中，\"草神\"是一位非常稀有的角色，而且在达到80次抽卡时，玩家保证能得到这位角色。在达到大保底之前，每次抽卡获得\"草神\"的概率非常低。\n",
    "\n",
    "让我们编写一个简单的程序来模拟这个抽卡过程，假设在未达到大保底之前，每次抽卡获得\"草神\"的概率是0.6%（即千分之六），一旦达到80次抽卡，玩家必定获得\"草神\"。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "675d6513-1ca2-4111-8710-932654263c25",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！在第80次抽卡时获得了草神。\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "\n",
    "def simulate_gacha():\n",
    "    attempts = 0\n",
    "    while True:\n",
    "        attempts += 1\n",
    "        if attempts < 80:\n",
    "            # 在大保底之前，每次抽卡有0.6%的概率获得草神\n",
    "            if random.random() < 0.006:\n",
    "                return attempts, True\n",
    "        else:\n",
    "            # 达到大保底，必定获得草神\n",
    "            return attempts, True\n",
    "\n",
    "# 模拟抽卡过程\n",
    "attempts, got_baodi = simulate_gacha()\n",
    "\n",
    "if got_baodi:\n",
    "    print(f\"恭喜！在第{attempts}次抽卡时获得了草神。\")\n",
    "else:\n",
    "    print(\"未能获得草神。\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "9603bc43-a8a1-41ab-bc6a-55ee7048cadc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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jFz/zZtvvpljisLXX3+ttWvXqnPnzpKkyy67TMWLF9cvv/yi7t2756keAMgN4RRAxLrssst011136fbbb9fixYt1xRVXKC4uThs3btSXX36p6tWr695779XZZ5+t008/Xf369ZPneSpZsqSmT5+u2bNn5+nnVa9eXZI0fPhwNWvWTNHR0Tr//PNVqFChwx6bkpKiypUrq23btmrYsKEqVKigXbt2ad68eXr22Wd1zjnn6Prrr8/Tz4+Pj9cVV1yhp556SomJiapcubLmz5+vV155RcWLF8/13yxevFidO3dW27ZttW7dOj300EM69dRT1bVrV0lS0aJF9fzzz6tjx47asWOH2rRpo9KlS2vr1q368ccftXXrVr344ot5qhNAZCOcAoho48eP16WXXqrx48dr7NixyszMVLly5XTZZZfp4osvlmTzPqdPn64ePXro7rvvVoECBdSwYUN9/vnnqlix4nH/rA4dOuirr77S2LFjNWTIEHmep9WrV+e6pWp8fLwGDx6sOXPmaMCAAdq8ebN8Pp+qVKminj17qm/fvnlu7C9Jb731lnr06KEHH3xQ+/fv12WXXabZs2erefPmuT7+lVde0euvv6527dopPT1dDRo00LPPPquSJUseeMwtt9yiihUrasSIEbr77ru1c+dOlS5dWjVr1lSnTp3yXCOAyObzDl3uCQCIeK+99ppuv/12LVq0KNfFZQDgL7SSAgAAQNAgnAIAACBocFofAAAAQYORUwAAAAQNwikAAACCBuEUAAAAQSPk+5xmZmZqw4YNKlasmN+2CwQAAMCJ8zxPO3fuVLly5RQVdfSx0ZAPpxs2bFCFChVclwEAAIBjWLduncqXL3/Ux4R8OC1WrJgk+4+Nj493XA0AAAAOlZqaqgoVKhzIbUcT8uE061R+fHw84RQAACCIHc8UTBZEAQAAIGgQTgEAABA0CKcAAAAIGoRTAAAABA3CKQAAAIIG4RQAAABBg3AKAACAoEE4BQAAQNAgnAIAACBoEE4BAAAQNAinAAAACBqEUwAAAAQNwikAAACCBuEUAAAAQYNwCgAAgKBBOAUAAEDQIJwCAAAgaBRwXQCAI/A8ae1aaeVKafduac8eKT3dLlnHh14f6b7MTOnUU6VKlaTKle26UiWpYkUpNtb1fykQOvbtk9avt9/NtWulNWvset06af9+KSZGKlw4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qKlbV5o923bNu/JK66gwZozNQ+3d+/AtZIE84N0Z4Sc52YJLz5628OnMM6U337TVpzfeSCgNVT6fbRH76682iurz2f/Xs86SXnrJThMjeH32mZ21GDZM2rfPmuf/8ov0wANsZhHKrrjCFrPNmSNddpm1iBs5UrrwQvvQAZwA3qURXt5+23Y1mTfPGru/+KKt/u3QIXL3uw83CQk2VeO776QLLpD++Ue6+26pXj3p559dV4dDbdxofTKbNrU5xOXL23a2H34oVazoujrkB5/PWu8tXGgLpk491Tpv1KkjDR1qZ7KAPCCcIjz884/14OvQwRY/XXyxtUC55x5GZcJV7dq2s82oUbY3+NdfW1jt1y+7DRXcycy0D4dZ02mioqwt1C+/2HxvhB+fz7qe/PSTneXYv99W8195pc0bB44T4RShb948Gy196y0bHR04UPrySxpFR4ICBWz6xq+/2haz+/fbTl/nnWevC7ixcqXNSeza1T4s1q5tp3hHjrS92xHeSpa0rVAnTbL/3199ZYveJk2yTTeAYyCcInSlp1u7oauusjYmp59up5UGDWIXmUhTvrz0/vvSRx/ZqeI1a2ze8dixriuLPLNm2ZmL776zYDJmjG2JecEFritDIPl81qz/p5+kyy+3zimdOtm8/+3bXVeHIEc4RWj65Rfp0kulESPsk/idd0pLl7KTTKRr2dLmGN98s81z69bNejBm7c0O//E865DRrJlNs6lTx0a0u3Vjvnckq1zZzmIMG2ZnOv77XzvTNXu268oQxAinCC2eZ4thatWyOaWlStmI2YQJnC6EKVpUev11O73v80njxtmWtNu2ua4sfKWn265OPXvaXNNOnWwF96mnuq4MwSA62vqffvutddfYsMF+J3v1YkMN5Mqv4XTBggVq2bKlypUrJ5/Ppw8++CDH1z3P06BBg1SuXDnFxsaqfv36WpG1rzJwqI0bbVTm/vvtD1qTJtYeqnVr15Uh2Ph80oMPStOn24eW+fNt3uPy5a4rCz+bN9tmCK++aoueRo6045gY15Uh2NSqJf3wg81Flmwb6dq17dQ/cBC/htO0tDTVqFFDY8aMyfXrI0aM0MiRIzVmzBgtWrRISUlJatSokXZm7XkOZJk2Tape3XolFi5so6czZlhDduBImje30ZrTT7d5qHXqSId8SMZJWLrUwsVXX1mLr08/tdEw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/qZMsV646enStddaUI2Lc10VgAAjnAIILj6fNHSo9MQTdnvoUKlnTykz02lZ8LMJE2z3sP37pZtvtj6mhQu7rgqAA4RTAMGpXz/phRfs+LnnpC5dbD4qws/o0fb/1/Oku++WJk+WChZ0XRUARwinAIJX167SpEl2uv/VV6X27W1FP8KD50lDhki9etntPn1sIVwUb01AJOMvAIDgdttt0rvv2kja1KlS69bWExWhzfOkBx+UBg602489ZgvgfD63dQFwjnAKIPjdcIMtjomNlT791FZz79zpuiqcqIwM6Z57pKefttujRtnCN4IpABFOAYSKJk2srVCxYtK8edZmaMcO11Uhr/bts9Hwl16yMDphgi14A4D/RzgFEDrq1bOG7CVLSt9/n72DEELD3r3SjTdKb71lfW3fflu6807XVQEIMoRTAKHlootsK8ukJOmnn2wEdft211XhWPbtk9q1kz74QIqJkaZNk266yXVVAIIQ4RRA6KlWzU7tZwXURo2kv/92XRWOJKt36bRptlXthx9KLVq4rgpAkCKcAghNZ50lzZlje64vXWpzUlNSXFeFQ2VkSB07WqeFggUtoDZp4roqAEGMcAogdJ17rs1BLVVKWrRIatpUSk11XRWyZGRId9yRPcf0v/+1TgsAcBSEUwChrVo16fPPpRIlpG+/tfCza5frqpCZKd11l+32FB0tTZkitWrluioAIYBwCiD01awpzZ4tJSRIX31l8xnT0lxXFbk8z3b3evVV2+3pzTetVy0AHAfCKYDwUKuWNGuWFB9vq/lbtWInKRc8T7rvPmn8eOtjOnkyq/IB5AnhFED4uPhiaeZMqWhRm4t63XXSnj2uq4ocnic98ID0wgsWTCdOtFX6AJAHhFMA4aVOHdvitEgRG0m94QYpPd11VeHP86S+faXRo+32yy/bKn0AyCPCKYDwU6+e9MknUmysBdUbb7TdieAfnic9/LD01FN2+8UX2fkJwAkjnAIIT/XrSx99JBUubNft29suRch/gwdLw4bZ8fPPS/fc47YeACGNcAogfDVsaNtlFiokvf++dMsttlsR8s/QoRZOJWnkSKl7d7f1AAh5hFMA4a1JEwumBQtK775rp5s9z3VV4WH0aDudL0nDh0u9ejktB0B4IJwCCH/Nm9v2mdHR1tpowADXFYW+KVOyw+hjj0kPPui2HgBhg3AK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VFSU99dffx247+233/ZiYmK8lJQUFyU6M3HiRC8hISHXr0nypk2bFtB6gtGRniNeR4erVKmSN2rUKNdlBI2LL77Yu+eee3Lcd/bZZ3v9+vVzVFHwGDhwoFejRg3XZQStQ//+ZmZmeklJSd6TTz554L49e/Z4CQkJ3rhx4xxU6F5u71EdO3b0rr32Wif1BKMtW7Z4krz58+d7nufmdcTI6RGkpKSoZMmSB25/8803qlatmsqVK3fgviZNmig9PV1LlixxUWLQ6t69uxITE1W7dm2NGzdOmZmZrksKGryOcjd8+HCVKlVKNWvW1NChQyN2msPevXu1ZMkSNW7cOMf9jRs31tdff+2oquCycuVKlStXTlWqVFG7du30559/ui4paK1evVqbNm3K8XqKiYnRlVdeyevpEPPmzVPp0qV15plnqkuXLtqyZYvrkpxJSUmRpAMZyMXrqIBfvmuI++OPP/T888/rmWeeOXDfpk2bVKZMmRyPK1GihAoVKqRNmzYFusSg9dhjj+nqq69WbGys5syZo969e2vbtm0RfZr2YLyODtejRw9deOGFKlGihL7//nv1799fq1ev1oQJE1yXFnDbtm1TRkbGYa+RMmXKROzr42CXXHKJJk+erDPPPFObN2/W448/rrp162rFihUqVaqU6/KCTtZrJrfX09q1a12UFJSaNWumtm3bqlKlSlq9erUeeeQRXXXVVVqyZEnE7R7leZ4eeOABXX755apWrZokN6+jsB45zW3y/KGXxYsX5/g3GzZsUNOmTdW2bVt17tw5x9d8Pt9hP8PzvFzvDxUn8hwdzcMPP6w6deqoZs2a6t27t4YMGaKnnnrKj/8F/pffz1E4vo4OlZfnrFevXrryyit1/vnnq3Pnzho3bpxeeeUVbd++3fF/hTuHvhbC7fVxopo1a6YbbrhB1atXV8OGDfXJJ59IkiZNmuS4suDG6+nobrrpJjVv3lzVqlVTy5YtNWPGDP3vf/878PqKJN27d9dPP/2kt99++7CvBfJ1FNYjp927d1e7du2O+pjKlSsfON6wYYMaNGigOnXq6KWXXsrxuKSkJH333Xc57vv777+1b9++wz5NhJK8Pkd5demllyo1NVWbN28O2ecpP5+jcH0dHepknrOsVbKrVq2KuNGwxMRERUdHHzZKumXLlrB6feSXuLg4Va9eXStXrnRdSlDK6mSwadMmlS1b9sD9vJ6OrmzZsqpUqVLEva7uu+8+ffTRR1qwYIHKly9/4H4Xr6OwDqeJiYlKTEw8rsf+9ddfatCggWrVqqWJEycqKirnoHKdOnU0dOhQbdy48cD/nFmzZikmJka1atXK99oDJS/P0YlYunSpChcufMS2SqEgP5+jcH0dHepknrOlS5dKUo4/gpGiUKFCqlWrlmbPnq3WrVsfuH/27Nm69tprHVYWnNLT0/Xrr7+qXr16rksJSlWqVFFSUpJmz56tCy64QJLNa54/f76GDx/uuLrgtX37dq1bty5i/gZ5nqf77rtP06ZN07x581SlSpUcX3fxOgrrcHq8NmzYoPr166tixYp6+umntXXr1gNfy/rE0LhxY5177rm69dZb9dRTT2nHjh3q06ePunTpovj4eFelB1RycrJ27Nih5ORkZWRkaNmyZZKkqlWrqmjRopo+fbo2bdqkOnXqKDY2VnPnztVDDz2ku+66K2Lm7RzrOeJ1lNM333yjb7/9Vg0aNFBCQoIWLVqkXr16qVWrVqpYsaLr8px44IEHdOutt+qiiy46cBYnOTlZ99xzj+vSnOvTp49atmypihUrasuWLXr88ceVmpoaUe3qDrVr1y6tWrXqwO3Vq1dr2bJlKlmypCpWrKiePXtq2LBhOuOMM3TGGWdo2LBhKlKkiDp06OCw6sA62nNUsmRJDRo0SDfccIPKli2rNWvWaMCAAUpMTMzxATGcdevWTW+99ZY+/PBDFStW7MCZm4SEBMXGxsrn8wX+deSXHgAhZuLEiZ6kXC8HW7t2rde8eXMvNjbWK1mypNe9e3dvz549jqoOvI4dO+b6HM2dO9fzPM+bMWOGV7NmTa9o0aJekSJFvGrVqnmjR4/29u3b57bwADrWc+R5vI4OtmTJEu+SSy7xEhISvMKFC3tnnXWWN3DgQC8tLc11aU698MILXqVKlbxChQp5F1544YGWLpHupptu8sqWLesVLFjQK1eunHf99dd7K1ascF2WU3Pnzs31b07Hjh09z7M2QAMHDvSSkpK8mJgY74orrvCWL1/utugAO9pz9O+//3qNGzf2TjnlFK9gwYJexYoVvY4dO3rJycmuyw6YI+WfiRMnHnhMoF9Hvv8vDAAAAHAurFfrAwAAILQQTgEAABA0CKcAAAAIGoRTAAAABA3CKQAAAIIG4RQAAABBg3AKAACAoEE4BQAAQNAgnAIAACBoEE4BAAAQNAinAAAACBqEUwAAAASN/wOVu0ISGbzw2gAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "t = np.linspace(0, 2 * np.pi, 100)\n",
    "x = 16 * np.sin(t) ** 3\n",
    "y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(x, y, 'r')\n",
    "plt.title('Heart Shape')\n",
    "plt.axis('equal')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "da8f28a9-ecc0-42cd-9882-c93f4d2097d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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OvWYyy+/XPXt21e9+uqravHixeqEE05od62rmnNcEomEGjdunOrbt696//33s9rKxGIxpVT7O1eC1jtTp05Vy5YtU9dee63q0qVLanbyDTfcoCZMmJDaP2gxc91116lly5apqVOnNmox8/bbbyvHcdRtt92mli9frm677bZ21WKmucfkySefVK7rqr/85S+7bFc2ZcoUNWvWLPXpp5+qJUuWqIsvvli5rqveeeedNn99e6q5x+XOO+9UM2bMUKtWrVIffvihuuGGGxSgnnvuudQ+ne1cCVxwwQVq2LBhTT5nRzhXampq1JIlS9SSJUsUoO644w61ZMmSVNeUzvi+0tIkWG3ntm7dqs4//3zVrVs31a1bN3X++ec3ap0CqEceeSRr2/33368KCwub7If55ZdfqmOPPVb16NFDhcNhdcABB6irr766Ud/RfNXcY1JXV6dGjx6tevbsqUKhkNp3333VxIkT1Zdffpn1mPr6enXVVVepHj16qMLCQjV27NhG++Sz5h6X1atXK6DJ25w5c5RS7fNc+ctf/qLKy8tVOBxWhx9+uHr99ddT902cOFGNGjUqa/+5c+eqww47TIXDYdW/f/8mP+A9++yzasCAASoUCqmKioqsAKU9aM4xGTVqVJPnxMSJE1P7XHvttWrfffdV4XBY9ezZU40ePVrNmzevDV9Ry2jOcbn99tvVAQccoAoKClT37t3VyJEj1cyZMxs9Z2c6V5TSbf8KCwvVAw880OTzdYRzJWhbtqvfic76vtKSLKVMVa8QQgghhBB5RmpWhRBCCCFE3pJgVQghhBBC5C0JVoUQQgghRN6SYFUIIYQQQuQtCVaFEEIIIUTekmBVCCGEEELkLQlWhRBCCCFE3pJgVQghhBBC5C0JVoUQQgghRN6SYFUIIYQQQuQtCVaFEEIIIUTekmBVCCGEEELkrf8PRGViXObar6AAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "n = 1000\n",
    "theta = np.linspace(0, 4 * np.pi, n)\n",
    "r = np.linspace(0, 1, n)\n",
    "x = r * np.cos(theta)\n",
    "y = r * np.sin(theta)\n",
    "colors = theta\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.scatter(x, y, c=colors, cmap='hsv', alpha=0.75)\n",
    "plt.title('Colorful Spiral')\n",
    "plt.axis('equal')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "0ddcf81c-ebf4-4fda-bc1e-c76ed54aa661",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "pygame 2.5.2 (SDL 2.28.3, Python 3.10.13)\n",
      "Hello from the pygame community. https://www.pygame.org/contribute.html\n",
      "Game Over\n"
     ]
    },
    {
     "ename": "SystemExit",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "An exception has occurred, use %tb to see the full traceback.\n",
      "\u001b[1;31mSystemExit\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\wdcpclover\\MiniConda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3561: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.\n",
      "  warn(\"To exit: use 'exit', 'quit', or Ctrl-D.\", stacklevel=1)\n"
     ]
    }
   ],
   "source": [
    "import pygame\n",
    "import random\n",
    "import sys\n",
    "\n",
    "# 初始化pygame\n",
    "pygame.init()\n",
    "\n",
    "# 设置屏幕大小\n",
    "screen_width = 800\n",
    "screen_height = 600\n",
    "screen = pygame.display.set_mode((screen_width, screen_height))\n",
    "\n",
    "# 颜色定义\n",
    "black = (0, 0, 0)\n",
    "white = (255, 255, 255)\n",
    "red = (255, 0, 0)\n",
    "\n",
    "# 玩家设置\n",
    "player_width = 50\n",
    "player_height = 50\n",
    "player_x = screen_width / 2 - player_width / 2\n",
    "player_y = screen_height - player_height - 10\n",
    "player_speed = 5\n",
    "\n",
    "# 陨石设置\n",
    "meteor_size = 50\n",
    "meteor_x = random.randrange(0, screen_width - meteor_size)\n",
    "meteor_y = -meteor_size\n",
    "meteor_speed = 4\n",
    "\n",
    "# 游戏循环标志\n",
    "running = True\n",
    "\n",
    "# 游戏主循环\n",
    "while running:\n",
    "    for event in pygame.event.get():\n",
    "        if event.type == pygame.QUIT:\n",
    "            running = False\n",
    "    \n",
    "    # 按键检测\n",
    "    keys = pygame.key.get_pressed()\n",
    "    if keys[pygame.K_LEFT] and player_x > 0:\n",
    "        player_x -= player_speed\n",
    "    if keys[pygame.K_RIGHT] and player_x < screen_width - player_width:\n",
    "        player_x += player_speed\n",
    "    \n",
    "    # 屏幕填充\n",
    "    screen.fill(black)\n",
    "    \n",
    "    # 绘制玩家\n",
    "    pygame.draw.rect(screen, white, (player_x, player_y, player_width, player_height))\n",
    "    \n",
    "    # 绘制陨石\n",
    "    pygame.draw.ellipse(screen, red, (meteor_x, meteor_y, meteor_size, meteor_size))\n",
    "    \n",
    "    # 更新陨石位置\n",
    "    meteor_y += meteor_speed\n",
    "    if meteor_y > screen_height:\n",
    "        meteor_y = -meteor_size\n",
    "        meteor_x = random.randrange(0, screen_width - meteor_size)\n",
    "    \n",
    "    # 碰撞检测\n",
    "    if player_y < meteor_y + meteor_size and player_x < meteor_x + meteor_size and player_x + player_width > meteor_x:\n",
    "        print(\"Game Over\")\n",
    "        pygame.quit()\n",
    "        sys.exit()\n",
    "    \n",
    "    pygame.display.flip()\n",
    "    pygame.time.Clock().tick(60)\n",
    "\n",
    "pygame.quit()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "34ff4d91-257d-4c42-9d14-df39a7ec0c6c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Collecting pygame\n",
      "  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/54/77/235d51462fae6acb3464e86ccc254f860e03567876afb43705b4b2ce1819/pygame-2.5.2-cp310-cp310-win_amd64.whl (10.8 MB)\n",
      "     ---------------------------------------- 0.0/10.8 MB ? eta -:--:--\n",
      "     - -------------------------------------- 0.3/10.8 MB 8.6 MB/s eta 0:00:02\n",
      "     --- ------------------------------------ 0.8/10.8 MB 10.6 MB/s eta 0:00:01\n",
      "     ----- ---------------------------------- 1.4/10.8 MB 11.5 MB/s eta 0:00:01\n",
      "     -------- ------------------------------- 2.3/10.8 MB 13.2 MB/s eta 0:00:01\n",
      "     ------------ --------------------------- 3.3/10.8 MB 14.8 MB/s eta 0:00:01\n",
      "     -------------- ------------------------- 4.0/10.8 MB 14.9 MB/s eta 0:00:01\n",
      "     -------------- ------------------------- 4.0/10.8 MB 14.9 MB/s eta 0:00:01\n",
      "     -------------------- ------------------- 5.6/10.8 MB 14.8 MB/s eta 0:00:01\n",
      "     ---------------------- ----------------- 5.9/10.8 MB 14.6 MB/s eta 0:00:01\n",
      "     ------------------------- -------------- 6.8/10.8 MB 15.0 MB/s eta 0:00:01\n",
      "     -------------------------- ------------- 7.0/10.8 MB 14.0 MB/s eta 0:00:01\n",
      "     ------------------------------- -------- 8.4/10.8 MB 15.3 MB/s eta 0:00:01\n",
      "     --------------------------------- ------ 9.1/10.8 MB 14.9 MB/s eta 0:00:01\n",
      "     ------------------------------------ --- 9.8/10.8 MB 15.3 MB/s eta 0:00:01\n",
      "     --------------------------------------  10.7/10.8 MB 16.4 MB/s eta 0:00:01\n",
      "     --------------------------------------- 10.8/10.8 MB 15.2 MB/s eta 0:00:00\n",
      "Installing collected packages: pygame\n",
      "Successfully installed pygame-2.5.2\n"
     ]
    }
   ],
   "source": [
    "!pip install pygame\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "143b4a49-b64c-41da-b943-c3cecf563ba7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
